#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

int main() {
    int pipefd[2];
    if (pipe(pipefd) == -1) {
        perror("pipe");
        exit(EXIT_FAILURE);
    }

    // 获取原始标志并添加非阻塞模式
    int flags = fcntl(pipefd[0], F_GETFL);
    if (fcntl(pipefd[0], F_SETFL, flags | O_NONBLOCK) == -1) {
        perror("fcntl F_SETFL");
        close(pipefd[0]);
        close(pipefd[1]);
        exit(EXIT_FAILURE);
    }

    // 尝试读取空管道（应返回 EAGAIN）
    char buf[10];
    ssize_t n = read(pipefd[0], buf, sizeof(buf));
    if (n == -1 && errno == EAGAIN) {
        printf("F_SETFL 非阻塞模式测试通过！\n");
    } else {
        printf("测试失败: n=%zd, errno=%d\n", n, errno);
    }

    close(pipefd[0]);
    close(pipefd[1]);
    return EXIT_SUCCESS;
}
